/**
 * Copyright (C) 2018-2022
 * All rights reserved, Designed By www.yixiang.co
 * 注意：
 * 本软件为www.yixiang.co开发研制
 */
package co.yixiang.modules.monitoring.entity.domain;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import co.yixiang.common.annotation.Sensitive;
import co.yixiang.common.domain.BaseDomain;
import co.yixiang.modules.monitoring.entity.dto.ChannelDto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author hupeng
 * @date 2020-05-12
 */
@Data
@TableName("yx_monitoring")
public class YxMonitoring extends BaseDomain {

    /** 监控设备ID */
    @TableId
    private Integer id;
    /** 分类id */
    @NotNull(message = "分类不能为空")
    private Long cateId;
    /** 设备名称 */
    @NotBlank(message = "设备名称不能为空")
    private String name;
    /** 设备的类型 */
    private String type;
    /** 预览图 */
    @Sensitive
    private String preview;
    /** 设备是否支持调节 */
    private Boolean isAdjust;
    /**
     * 设备序列号,存在英文字母的设备序列号，字母需为大写
     */
    @NotBlank(message = "设备序列号不能为空")
    private String deviceSerial;
    /**
     * 设备验证码，设备机身上的六位大写字母
     */
    @NotBlank(message = "设备验证码不能为空")
    private String validateCode;
    /** 主机 */
    @NotBlank(message = "IP不能为空")
    private String host;
    /** 端口 */
    @NotNull(message = "端口号不能为空")
    private Integer port;
    /** 用户名 */
    @NotBlank(message = "账号不能为空")
    private String username;
    /** 密码 */
    @NotBlank(message = "密码不能为空")
    private String passwd;
    /** 通道 */
    private String channel;
    /** 是否多播 */
    private Boolean multicast;
    /** 浏览次数 */
    private Integer visit;
    /** 排序 */
    private Integer sort;
    /** 位置信息  */
    private String position;
    /** 位置信息  */
    private String positionStr;
    /** 地址  */
    private String addressPath;
    /** 详细地址  */
    private String addressDetail;
    /**
     * 设备类型为NVR是保存的通道信息
     */
    private String channelData;

    /** 监控设备的状态 */
    @TableField(exist = false)
    private Integer status = 0;
    /** 设备的rtsp链接 */
    @TableField(exist = false)
    private String url;

    @TableField(exist = false)
    private List<ChannelDto> channelList;
    public void copy(YxMonitoring source) {
        BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
